package com.rc.web.converter;

import com.rc.pojo.dto.activity.ActivityAddDTO;
import com.rc.pojo.dto.activity.UpdateActivityDTO;
import com.rc.pojo.po.Activity;
import com.rc.pojo.vo.activity.ActivityListVO;
import com.rc.pojo.vo.activity.ActivityVO;
import org.mapstruct.Mapper;

/**
 * 活动信息转换器
 * 使用MapStruct实现DTO、PO、VO之间的转换
 */
@Mapper(componentModel = "spring") // 声明为Spring组件
public interface ActivityConverter {

    /**
     * 将活动PO转换为列表VO
     * @param activity 活动持久化对象
     * @return 活动列表视图对象
     */
    ActivityListVO toListVO(Activity activity);

    /**
     * 将新增DTO转换为PO
     * @param dto 活动新增数据传输对象
     * @return 活动持久化对象
     */
    Activity addDTO2PO(ActivityAddDTO dto);

    /**
     * 将更新DTO转换为PO
     * @param dto 活动更新数据传输对象
     * @return 活动持久化对象
     */
    Activity updateDTO2PO(UpdateActivityDTO dto);

    /**
     * 将活动PO转换为VO
     * @param activity 活动持久化对象
     * @return 活动视图对象
     */
    ActivityVO toVO(Activity activity);

    // 以下代码被注释，用于根据区域信息更新活动
    // @BeanMapping(ignoreByDefault = true)
    // @Mapping(target = "farmId",source = "farmId")
    // void updateByArea(Area area, @MappingTarget Activity activity);
}
